package com.tanhua.dubbo.api;

import com.tanhua.domain.db.PageResult;
import com.tanhua.domain.mg.Comment;
import com.tanhua.domain.mg.Friend;
import com.tanhua.dubbo.mg.MessagesApi;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;

import java.util.List;

@Service
public class MessagesApiImpl implements MessagesApi {

    //注入mongoTemplate对象
    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public PageResult<Comment> findUserIdByPublishIdAndType(Long page, Long pagesize, Integer type, Long currentUserId) {
        //type：代表的是当前操作的类型是什么 1：动态 2：视频 3：评论
        //currentUserId:当前用户Id 对应的是quanzi_comment表中的publishUserId（动态的作者）
        //创建分页查询条件
        Query query=new Query();
//        //修改查询条件
//        int typeInt = Integer.parseInt(type);
        //例子：查询2号（发布者）所有的动态信息 它的类型为1（点赞）
        query.addCriteria(Criteria.where("commentType").is(type).and("publishUserId").is(currentUserId));
        //设置分页
        query.limit(pagesize.intValue()).skip((page-1)*pagesize);
        //查询满足条件的记录
        List<Comment> comments = mongoTemplate.find(query, Comment.class);
        //查询总记录数
        long count = mongoTemplate.count(query, Comment.class);
        //计算总页数
        long pages = (count / pagesize) + (count % pagesize > 0 ? 1 : 0);
        //8.封装PageResult
        PageResult<Comment> publishPageResult = new PageResult<>();
        publishPageResult.setItems(comments);
        publishPageResult.setPage(page.intValue());
        publishPageResult.setPagesize(pagesize.intValue());
        publishPageResult.setCounts((int)count);
        publishPageResult.setPages((int)pages);
        return publishPageResult;
    }
}
